package com.heima.jdk7dateDemo;

import java.util.Calendar;

/***
 *@title CalendarDemo01
 *@description <TODO description class purpose>
 *@author 12468
 *@version 1.0.0
 *@create 2025-09-09 23:15
 **/
public class CalendarDemo01 {
    public static void main(String[] args) {
        /**
         * public static Calendar getInstance 获取当前时间的日历对象
         *
         * public static getTime() 获取日期对象
         * public static setTime(Date date) 给日历设置日期对象
         *
         * public long getTimeMillis() 获取时间毫秒值
         * public void setTimeInMillis(long millis) 给日历设置时间毫秒值
         *
         * public int get(int field) 获取日期中摸个字段信息
         * public void set(int field, int value) 修改日历的摸个字段信息
         * public void add(int field, int amount) 为了某个字段增加/减少指定的值
         */

        // 1. 获取日历对象
        // 细节：Calendar 是一个抽象类，不能直接 new 而是通过一个静态方法获取到子类对象
        // 底层原理：
        // 会根据系统的不同时区来获取不同的日历对象，默认表示当前时间
        // 会把时间中的纪元、年、月、日、时、分、秒、星期，等等都放在一个数组中
        // 0: 纪元
        // 1: 年
        // 2：月
        // 3： 一年中第几周
        // 细节2：
        // 月份：范围0~11
        // 星期 在老外的眼里 星期日是一周的第一天
        // 1（星期日） 2（星期一） 3（星期二） 4（星期三） 5（星期四） 6（星期五） 7（星期六）

        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);

        // 设置时间
        calendar.set(Calendar.YEAR, 2002);
        calendar.set(Calendar.MONTH, 9);
        calendar.set(Calendar.DAY_OF_MONTH, 20);

        // 调佣方法在这个基础上增加一个月
        calendar.add(Calendar.MONTH, 1);

        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int date = calendar.get(Calendar.DAY_OF_MONTH);
        int week = calendar.get(Calendar.DAY_OF_WEEK);


        System.out.println(year + ", " + month + ", " + date + ", " + getWeek(week));
    }

    public static String getWeek(int index) {
        String[] weeks = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        return weeks[index];
    }
}
